const api = require('../../utils/api')

Page({
  data: {
    addressList: [],
    loading: false,
    isSelectMode: false // 是否是选择地址模式
  },

  onLoad(options) {
    // 判断是否是选择地址模式
    this.setData({
      isSelectMode: options.select === 'true'
    });
  },

  onShow() {
    // 每次显示页面时重新加载地址列表
    this.loadAddressList();
  },

  // 加载地址列表
  async loadAddressList() {
    try {
      this.setData({ loading: true });
      const res = await api.getAddressList();
      if (res.success) {
        this.setData({ addressList: res.data });
      } else {
        wx.showToast({
          title: res.message || '加载失败',
          icon: 'none',
          duration: 2000
        });
      }
    } catch (error) {
      console.error('加载地址列表失败:', error);
      wx.showToast({
        title: error.message || '加载失败',
        icon: 'none',
        duration: 2000
      });
    } finally {
      this.setData({ loading: false });
    }
  },

  // 点击地址项
  onAddressClick(e) {
    const { id } = e.currentTarget.dataset;
    if (this.data.isSelectMode) {
      // 选择地址模式，返回选中的地址
      const address = this.data.addressList.find(item => item.id === id);
      if (address) {
        // 返回上一页并传递选中的地址
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2];
        if (prevPage) {
          prevPage.setData({
            selectedAddress: address
          });
        }
        wx.navigateBack();
      }
    }
  },

  // 新增地址
  addAddress() {
    wx.navigateTo({
      url: '/pages/address/edit/edit'
    });
  },

  // 编辑地址
  editAddress(e) {
    const { id } = e.currentTarget.dataset;
    wx.navigateTo({
      url: `/pages/address/edit/edit?id=${id}`
    });
  },

  // 删除地址
  async deleteAddress(e) {
    const { id } = e.currentTarget.dataset;
    
    try {
      // 确认删除
      const res = await wx.showModal({
        title: '提示',
        content: '确定要删除这个地址吗？',
        confirmColor: '#ff4d4f'
      });

      if (res.confirm) {
        wx.showLoading({
          title: '删除中...',
          mask: true
        });

        const response = await api.deleteAddress(id);
        if (response.success) {
          wx.showToast({
            title: '删除成功',
            icon: 'success',
            duration: 1500
          });
          // 重新加载地址列表
          this.loadAddressList();
        } else {
          throw new Error(response.message || '删除失败');
        }
      }
    } catch (error) {
      console.error('删除地址失败:', error);
      wx.showToast({
        title: error.message || '删除失败',
        icon: 'none',
        duration: 2000
      });
    } finally {
      wx.hideLoading();
    }
  },

  // 设置默认地址
  async setDefault(e) {
    const { id } = e.currentTarget.dataset;
    
    try {
      wx.showLoading({
        title: '设置中...',
        mask: true
      });

      const res = await api.setDefaultAddress(id);
      if (res.success) {
        wx.showToast({
          title: '设置成功',
          icon: 'success',
          duration: 1500
        });
        // 重新加载地址列表
        this.loadAddressList();
      } else {
        throw new Error(res.message || '设置失败');
      }
    } catch (error) {
      console.error('设置默认地址失败:', error);
      wx.showToast({
        title: error.message || '设置失败',
        icon: 'none',
        duration: 2000
      });
    } finally {
      wx.hideLoading();
    }
  }
}) 